﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Classes;

namespace Copilot
{
	class Copilot
	{
        static void Main(string[] args)
		{
			IList<string> options = new List<string>();
            DBClientes dbClientes = new DBClientes();
            DBEquipos dbEquipos = new DBEquipos();
			DBVehiculos dbvehiculos = new DBVehiculos();
            DBCotizaciones dbcotizaciones = new DBCotizaciones(dbClientes);
            DBReportes dbReportes = new DBReportes();
            DBScoring dbScoring = new DBScoring();
            
            int opcionesMenu = 5;

            ConsoleKeyInfo tecla;
            
			for (int i = 1; i <= opcionesMenu; i++)
                options.Add(i.ToString());
			    
		
			string selection;

            do
            {
                Console.Clear();

                Console.WriteLine("Copilot S.A.");
                Console.WriteLine("");
                Console.WriteLine("Seleccione una opcion:");
                Console.WriteLine("----------------------");
                Console.WriteLine("1. Menu Cliente");
                Console.WriteLine("2. Cambiar Scoring");
                Console.WriteLine("3. Solicitar Cotizacion ---> SOLO PARA CLIENTES !!!");
                Console.WriteLine("4. Ver Listado Clientes");
                Console.WriteLine("5. Salir");

                do
                {
                    tecla = Console.ReadKey(true);
                    selection = tecla.KeyChar.ToString();
                }
                while (!(verificarOpcion(selection, opcionesMenu)));

                switch (selection)
                {
                    case "1":
                        {
                            new MenuCliente(dbClientes, dbvehiculos, dbEquipos);
                        }
                        break;
                    case "2":
                        {
                            new ModificaScoring(dbvehiculos, dbClientes, dbScoring);//le agregue el dbscoring. Mariana 1.11
                        }
                        break;
                    case "3":
                        {
                            new SolicitarCotizacion(dbClientes, dbcotizaciones, dbReportes);
                        }
                        break;
                    case "4":
                        {
                            imprimirListaClientes(dbClientes);
                        }
                        break;
                    case "5":
                        {
                            Console.WriteLine("Copilot System se está cerrando ... Gracias por aprobarnos ;) !!!");
                            Console.ReadKey();
                            return;
                        }
                        break;
                }
                selection = "0";
            }
            while (options.Contains(selection) == false);         
        }


        static Boolean verificarOpcion(string opcion, int opcionesMenu)
        {
            for (int i = 1; i <= opcionesMenu; i++)
                if (opcion == i.ToString())
                    return true;
            return false;
        }


        static void imprimirListaClientes(DBClientes dbClientes)
        {
            List<Cliente> lClientes = (List<Cliente>)dbClientes.VerClientes();

            Console.Clear();
            Console.WriteLine("Listado de Clientes");
            for (int i = 0; i < lClientes.Count(); i++)
                {
                    lClientes.ElementAt(i).ImprimirDatos();
                    if (lClientes.Count() == i + 1)
                        Console.WriteLine("Ha Llegado al último Cliente !!!");
                    else
                        Console.WriteLine("Presione enter para ver el próximo");
                    Console.ReadKey();
                }
        }

	}
}
